/**
 * Created by JetBrains PhpStorm.
 * User: taoqili
 * Date: 12-2-20
 * Time: 上午11:19
 * To change this template use File | Settings | File Templates.
 */

(function() {

    var video = {},
        uploadVideoList = [],
        isModifyUploadVideo = false,
        uploadFile;

    window.onload = function() {
        $focus($G("videoUrl"));
        initTabs();
        initVideo();
    };

    /* 初始化tab标签 */
    function initTabs() {
        var tabs = $G('tabHeads').children;
        for (var i = 0; i < tabs.length; i++) {
            domUtils.on(tabs[i], "click", function(e) {
                var j, bodyId, target = e.target || e.srcElement;
                for (j = 0; j < tabs.length; j++) {
                    bodyId = tabs[j].getAttribute('data-content-id');
                    if (tabs[j] == target) {
                        domUtils.addClass(tabs[j], 'focus');
                        domUtils.addClass($G(bodyId), 'focus');
                    } else {
                        domUtils.removeClasses(tabs[j], 'focus');
                        domUtils.removeClasses($G(bodyId), 'focus');
                    }
                }
            });
        }
    }

    function initVideo() {
        addUrlChangeListener($G("videoUrl"));
        addOkListener();

        //编辑视频时初始化相关信息
        (function() {
            var img = editor.selection.getRange().getClosedNode(),
                url;
            if (img && img.className) {
                var hasFakedClass = (img.className == "edui-faked-video"),
                    hasUploadClass = img.className.indexOf("edui-upload-video") != -1;
                if (hasFakedClass || hasUploadClass) {
                    $G("videoUrl").value = url = img.getAttribute("_url");
                    $G("videoWidth").value = img.width;
                    $G("videoHeight").value = img.height;
                    var align = domUtils.getComputedStyle(img, "float"),
                        parentAlign = domUtils.getComputedStyle(img.parentNode, "text-align");
                    updateAlignButton(parentAlign === "center" ? "center" : align);
                }
                if (hasUploadClass) {
                    isModifyUploadVideo = true;
                }
            } else if (dialog.anchorEl) {
                var iframe = $(dialog.anchorEl).find('.video_iframe:first');
                if (iframe.size() > 0) {
                    $G("videoUrl").value = url = iframe.attr('src');
                }
            }
            createPreviewVideo(url);
        })();
    }

    /**
     * 监听确认和取消两个按钮事件，用户执行插入或者清空正在播放的视频实例操作
     */
    function addOkListener() {
        dialog.onok = function() {
            $G("preview").innerHTML = "";
            return insertSingle();
        };
        dialog.oncancel = function() {
            $G("preview").innerHTML = "";
        };
    }

    /**
     * 依据传入的align值更新按钮信息
     * @param align
     */
    function updateAlignButton(align) {
        var aligns = $G("videoFloat").children;
        for (var i = 0, ci; ci = aligns[i++];) {
            if (ci.getAttribute("name") == align) {
                if (ci.className != "focus") {
                    ci.className = "focus";
                }
            } else {
                if (ci.className == "focus") {
                    ci.className = "";
                }
            }
        }
    }

    /**
     * 将单个视频信息插入编辑器中
     */
    function insertSingle() {
        var width = $G("videoWidth"),
            height = $G("videoHeight"),
            url = $G('videoUrl').value;
        if (!url) return false;
        if (!checkNum([width, height])) return false;

        if (dialog.anchorEl) {
            var conUrl = convert_url(url);
            var iframe = $(dialog.anchorEl).find('.video_iframe:first');
            iframe.attr('src', conUrl);
        } else {
            var html = getVideoHtml(url);
            if (html) {
                editor.execCommand('insertHtml', html);
            } else {
                return false;
            }
        }

        /*editor.execCommand('insertvideo', {
            url: convert_url(url),
            width: width.value,
            height: height.value,
            align: align
        }, isModifyUploadVideo ? 'upload':null);*/
    }

    function convert_url(url) {
        if (!url) return '';
        url = utils.trim(url)
            .replace(/v\.youku\.com\/v_show\/id_([\w\-=]+)\.html/i, 'player.youku.com/player.php/sid/$1/v.swf')
            .replace(/(www\.)?youtube\.com\/watch\?v=([\w\-]+)/i, "www.youtube.com/v/$2")
            .replace(/youtu.be\/(\w+)$/i, "www.youtube.com/v/$1")
            .replace(/v\.ku6\.com\/.+\/([\w\.]+)\.html.*$/i, "player.ku6.com/refer/$1/v.swf")
            .replace(/www\.56\.com\/u\d+\/v_([\w\-]+)\.html/i, "player.56.com/v_$1.swf")
            .replace(/www.56.com\/w\d+\/play_album\-aid\-\d+_vid\-([^.]+)\.html/i, "player.56.com/v_$1.swf")
            .replace(/v\.pps\.tv\/play_([\w]+)\.html.*$/i, "player.pps.tv/player/sid/$1/v.swf")
            .replace(/www\.letv\.com\/ptv\/vplay\/([\d]+)\.html.*$/i, "i7.imgs.letv.com/player/swfPlayer.swf?id=$1&autoplay=0")
            .replace(/www\.tudou\.com\/programs\/view\/([\w\-]+)\/?/i, "www.tudou.com/v/$1")
            .replace(/.+?\.qq\.com\/.+?\.html?.+?vid=([\w]+)(&.+)?/i, "http://v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/.+\/([\w]+)\.html$/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\.html?vid=([\w]+)/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/[\w]+\/[\w]+\/[\w]+\/[\w]+\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/[\w]+\/[\w]+\/[\w]+\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/cover\/[\w]+\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/cover\/[\w]+\/([\w]+)\.html/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/v\.qq\.com\/.+[\?\&]vid=([^&]+).*$/i, "v.qq.com/iframe/player.html?vid=$1&amp;auto=0")
            .replace(/my\.tv\.sohu\.com\/[\w]+\/[\d]+\/([\d]+)\.shtml.*$/i, "share.vrs.sohu.com/my/v.swf&id=$1");
        //http://v.qq.com/iframe/player.html?vid=u0100zvfnxt&amp;auto=0
        // http://v.qq.com/x/page/z0319ezsea5.html
        //http://cache.tv.qq.com/clientportal/v9_6/main.html?cid=x&vid=n0310j4ozgw 
        //http://v.qq.com/page/w/1/5/w01002z2j15.html
        return url;
    }

    /**
     * 检测传入的所有input框中输入的长宽是否是正数
     * @param nodes input框集合，
     */
    function checkNum(nodes) {
        for (var i = 0, ci; ci = nodes[i++];) {
            var value = ci.value;
            if (!isNumber(value) && value) {
                alert(lang.numError);
                ci.value = "";
                ci.focus();
                return false;
            }
        }
        return true;
    }

    /**
     * 数字判断
     * @param value
     */
    function isNumber(value) {
        return /(0|^[1-9]\d*$)/.test(value);
    }

    /**
     * 选择切换
     * @param selectParentId
     */
    function switchSelect(selectParentId) {
        var selects = $G(selectParentId).children;
        for (var i = 0, ci; ci = selects[i++];) {
            domUtils.on(ci, "click", function() {
                for (var j = 0, cj; cj = selects[j++];) {
                    cj.className = "";
                    cj.removeAttribute && cj.removeAttribute("class");
                }
                this.className = "focus";
            })
        }
    }

    /**
     * 监听url改变事件
     * @param url
     */
    function addUrlChangeListener(url) {
        if (browser.ie) {
            url.onpropertychange = function() {
                createPreviewVideo(this.value);
            }
        } else {
            url.addEventListener("input", function() {
                createPreviewVideo(this.value);
            }, false);
        }
    }

    function getVideoHtml(url) {

        var reg = /^(?:http(?:s|):\/\/|)(?:(?:\w*?)\.|)+(?:\w*?)\.(?:\w{2,4})(?:\?.*|\/.*|)$/ig;
        if (!reg.test(url)) {
            alert("请输入合法的网址");
            return false;
        }

        var conUrl = convert_url(url);
        return '<section class="135editor" >' +
            '<section style="text-align:center;"><iframe class="video_iframe" style="position: relative;z-index:1;height:320px;width:548px;"  scrolling="no" src="' + conUrl + '" allowfullscreen="" frameborder="0" ></iframe></section>' +
            '<p class="135brush" data-brushtype="text" style="text-align:center;">视频名称</p></section>'
    }

    /**
     * 根据url生成视频预览
     * @param url
     */
    function createPreviewVideo(url) {
        if (!url) return;
        var reg = /^(?:http(?:s|):\/\/|)(?:(?:\w*?)\.|)+(?:\w*?)\.(?:\w{2,4})(?:\?.*|\/.*|)$/ig;
        if (!reg.test(url)) {
            return false;
        }
        //<iframe style="   z-index:1; " src="http://v.qq.com/iframe/player.html?vid=u0100zvfnxt&amp;auto=0" allowfullscreen="" frameborder="0" height="200" width="300"></iframe>

        $G("preview").innerHTML = getVideoHtml(url);
    }

})();